/*
 * 金额 千分位表示法 格式化 重写了一个
 * 更新 plugins/money/money.js
 * 页面引用
 * <script src="<%=utb.getJsPath()%>plugins/money/money.js"></script>
 * 金额 input 调用
 * onfocus="this.value=rmoney(this.value)"
 * onblur="this.value=fmoney(this.value)"
 */

function fmoney(s) {
  var testReg = function (reg, target) {
    return reg.test(target);
  };
  var tran = function (str) {
    l = str.reverse();
    var t = "";
    for (var i = 0; i < l.length; i++) {
      t = t + l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
    }
    return t.split("").reverse().join("");
  }

  // 去除 除 数字 和 小数点 之外的字符 并 去除开头的 0
  s = (s + "").replace(/[^\d\.]/g, "").replace(/^0+/g, "");

  if (s == "" || parseFloat(s) == 0) {
    return "0.00"
  }

  s = s.split(".");

  // 整数部分
  var integer = s[0];
  // 小数部分
  var decimal = "";

  switch (s.length) {
    case 0:
      return 0 + "";
      break;
    case 1:
      integer = tran(integer.split(""));
      decimal = "00";
      break;
    case 2:
      decimal = s[1].split("");
      switch (decimal.length) {
        case 0:
          decimal = "00";
          break;
        case 1:
          decimal = decimal + "0";
          break;
        default:
          decimal = decimal[0] + decimal[1];
          break;
      }
      if (integer != "") {
        integer = tran(integer.split(""));
      } else integer = "0";
      break;
    default:
      integer = "";
      for (i = 0; i < s.length; i++) {
        if (parseFloat(s[i]) !== 0) {
          integer += s[i];
        }
      }
      return fmoney(integer);
  }
  return integer + "." + decimal;
}

function fmoney0(s) {
  if (rmoney(s) == 0) {
    return "";
  } else {
    return fmoney(s);
  }
}

// 将 fmoney 格式化的金额 反格式化

function rmoney(s) {
  s = (s + "").replace(/[^\d\.]/g, "");
  return(s == 0 || isNaN(s) || s == "") ? "" : s;
}

// 金额扩大100倍

function expmoney(s) {
  return rmoney(fmoney(s)).replace(/[^\d]/g, "").replace(/^0+/g, "");
}

// 金额缩小100倍

function narmoney(s) {
  s = (s + "").split("");
  while (s.length < 3) {
    s.unshift("0");
  }

  s.splice((s.length - 2), 0, ".")

  return s.join("");
}

// 嵌套 Ajax 延时方法
function waitToLoad() {
  var objId = arguments[0];
  var exp = arguments[1];
  var iCount = 0;
  if (arguments.length >= 3) {
    iCount = arguments[2];
  }
  var obj = document.getElementById(objId);
  if (obj == null && iCount < 300) {
    iCount = iCount + 1;
    timerId = window.setTimeout("waitToLoad('" + objId + "'," + exp + "," + iCount + ")", 200);
  } else {
    exp();
  }
}

// Ajax 返回 JS 载入
function executeScript(html) {
  var reg = /<script[^>]*>([^\x00]+)$/i;
  //对整段HTML片段按<\/script>拆分
  var htmlBlock = html.split("<\/script>");
  for (var i = 0; i < htmlBlock.length; i++) {
    var blocks;
    //匹配正则表达式的内容数组，blocks[1]就是真正的一段脚本内容，因为前面reg定义我们用了括号进行了捕获分组
    if (blocks = htmlBlock[i].match(reg)) {
      //清除可能存在的注释标记，对于注释结尾-->可以忽略处理，eval一样能正常工作
      var code = blocks[1].replace(/<!--/, '');
      try {
        //eval(code)
        //执行脚本
        if (!!(window.attachEvent && !window.opera)) {
          //ie
          execScript(code);
        } else {
          //not ie
          window.eval(code);
        }
      } catch (e) {
      }
    }
  }
}